package lambda;

import java.io.File;
import java.io.FileFilter;

/**
 * @Classname: LambdaDemo
 * @Author: bromide
 * @CreateTime: 2022/3/25--17:09
 * @Version: V1.0
 * @Desciption: JDK8之后java退出了一个特征：lambda表达式
 * lambda可以使得程序员面向函数式编程
 * <p>
 * 直观感受:可以用更精简的语法创建匿名内部类
 * 但是lambda创建匿名内部类是要求所实现的接口中只能有一个抽象方法。
 * 语法：
 * (参数列表)->{
 * 方法体
 * }
 */
public class LambdaDemo {
    public static void main(String[] args) {
        //匿名内部类
        FileFilter filter = new FileFilter() {
            @Override
            public boolean accept(File file) {
                return file.getName().contains("o");
            }
        };
        //lambda表达式写法 (就是省去了接口名和方法名)
        FileFilter filter1 = (File file) -> {
            return file.getName().contains("o");
        };
        //参数列表可以不写，如果只有一个参数时，"()"可以忽略不写
        FileFilter filter2 = file -> {
            return file.getName().startsWith("D");
        };
        //当方法体中只有一句话时，方法体的"{}"可以省略，并且如果含有return时，要一同省略
        FileFilter filter3 = file -> file.getName().startsWith("D");
    }
}
